#!/usr/bin/perl

# 双参数形式的 open 被用于打开管道。
# 第一个参数是你选择的文件句柄的名字。第二个参数是一个程序和它的全部参数，在其前面或后面是管道符号‘|’。
# 如果第二个参数为命令，则输入的命令应该和在操作系统的默认shell中键入的类型完全相同：
# 对linux就是 sh，对windows则是dos。

# 如果管道符号在程序名前，则打开文件句柄用于写，并且写向文件句柄的任何内容都发送给程序的标准输入。
# 如果管道符号在程序名后，则打开文件句柄用于读，并且从文件句柄读取的任何内容都从程序的标准输出获取。

if( 0 ){
    open(LSFH, "ls -l|") or die "cannot open ls -l: $!";
    while(my $line = <LSFH>){
        print "i saw: $line\n";
    }
    close LSFH;
}else{
    open (WC, "| wc -lw") or die "cannot open wordcount: $!";
    print WC "this is the first line.\n";
    print WC "THIS is the second line\n";
    print WC "this is the last line\n";
    print WC "Oops, I lied\n";
    close WC;
}